/**
 */
package com.logicfishsoftware.plugbench.wPPlugBench;

import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Plugin</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getImports <em>Imports</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getType <em>Type</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getName <em>Name</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getPlatform <em>Platform</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getTitle <em>Title</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getVersion <em>Version</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getPluginURI <em>Plugin URI</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getDescription <em>Description</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getAuthor <em>Author</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getSkin <em>Skin</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getInclude <em>Include</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getScript <em>Script</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getCss <em>Css</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getAdminCSS <em>Admin CSS</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getOptions <em>Options</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getOptionsPage <em>Options Page</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getAdminPages <em>Admin Pages</em>}</li>
 *   <li>{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getFunctions <em>Functions</em>}</li>
 * </ul>
 * </p>
 *
 * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin()
 * @model
 * @generated
 */
public interface Plugin extends EObject
{
  /**
   * Returns the value of the '<em><b>Imports</b></em>' attribute list.
   * The list contents are of type {@link java.lang.String}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Imports</em>' attribute list isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Imports</em>' attribute list.
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Imports()
   * @model unique="false"
   * @generated
   */
  EList<String> getImports();

  /**
   * Returns the value of the '<em><b>Type</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Type</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Type</em>' attribute.
   * @see #setType(String)
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Type()
   * @model
   * @generated
   */
  String getType();

  /**
   * Sets the value of the '{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getType <em>Type</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Type</em>' attribute.
   * @see #getType()
   * @generated
   */
  void setType(String value);

  /**
   * Returns the value of the '<em><b>Name</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Name</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Name</em>' attribute.
   * @see #setName(String)
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Name()
   * @model
   * @generated
   */
  String getName();

  /**
   * Sets the value of the '{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getName <em>Name</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Name</em>' attribute.
   * @see #getName()
   * @generated
   */
  void setName(String value);

  /**
   * Returns the value of the '<em><b>Platform</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Platform</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Platform</em>' attribute.
   * @see #setPlatform(String)
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Platform()
   * @model
   * @generated
   */
  String getPlatform();

  /**
   * Sets the value of the '{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getPlatform <em>Platform</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Platform</em>' attribute.
   * @see #getPlatform()
   * @generated
   */
  void setPlatform(String value);

  /**
   * Returns the value of the '<em><b>Title</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Title</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Title</em>' attribute.
   * @see #setTitle(String)
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Title()
   * @model
   * @generated
   */
  String getTitle();

  /**
   * Sets the value of the '{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getTitle <em>Title</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Title</em>' attribute.
   * @see #getTitle()
   * @generated
   */
  void setTitle(String value);

  /**
   * Returns the value of the '<em><b>Version</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Version</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Version</em>' attribute.
   * @see #setVersion(String)
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Version()
   * @model
   * @generated
   */
  String getVersion();

  /**
   * Sets the value of the '{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getVersion <em>Version</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Version</em>' attribute.
   * @see #getVersion()
   * @generated
   */
  void setVersion(String value);

  /**
   * Returns the value of the '<em><b>Plugin URI</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Plugin URI</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Plugin URI</em>' attribute.
   * @see #setPluginURI(String)
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_PluginURI()
   * @model
   * @generated
   */
  String getPluginURI();

  /**
   * Sets the value of the '{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getPluginURI <em>Plugin URI</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Plugin URI</em>' attribute.
   * @see #getPluginURI()
   * @generated
   */
  void setPluginURI(String value);

  /**
   * Returns the value of the '<em><b>Description</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Description</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Description</em>' attribute.
   * @see #setDescription(String)
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Description()
   * @model
   * @generated
   */
  String getDescription();

  /**
   * Sets the value of the '{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getDescription <em>Description</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Description</em>' attribute.
   * @see #getDescription()
   * @generated
   */
  void setDescription(String value);

  /**
   * Returns the value of the '<em><b>Author</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Author</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Author</em>' attribute.
   * @see #setAuthor(String)
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Author()
   * @model
   * @generated
   */
  String getAuthor();

  /**
   * Sets the value of the '{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getAuthor <em>Author</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Author</em>' attribute.
   * @see #getAuthor()
   * @generated
   */
  void setAuthor(String value);

  /**
   * Returns the value of the '<em><b>Skin</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Skin</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Skin</em>' attribute.
   * @see #setSkin(String)
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Skin()
   * @model
   * @generated
   */
  String getSkin();

  /**
   * Sets the value of the '{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getSkin <em>Skin</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Skin</em>' attribute.
   * @see #getSkin()
   * @generated
   */
  void setSkin(String value);

  /**
   * Returns the value of the '<em><b>Include</b></em>' attribute list.
   * The list contents are of type {@link java.lang.String}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Include</em>' attribute list isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Include</em>' attribute list.
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Include()
   * @model unique="false"
   * @generated
   */
  EList<String> getInclude();

  /**
   * Returns the value of the '<em><b>Script</b></em>' attribute list.
   * The list contents are of type {@link java.lang.String}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Script</em>' attribute list isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Script</em>' attribute list.
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Script()
   * @model unique="false"
   * @generated
   */
  EList<String> getScript();

  /**
   * Returns the value of the '<em><b>Css</b></em>' attribute list.
   * The list contents are of type {@link java.lang.String}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Css</em>' attribute list isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Css</em>' attribute list.
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Css()
   * @model unique="false"
   * @generated
   */
  EList<String> getCss();

  /**
   * Returns the value of the '<em><b>Admin CSS</b></em>' attribute list.
   * The list contents are of type {@link java.lang.String}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Admin CSS</em>' attribute list isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Admin CSS</em>' attribute list.
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_AdminCSS()
   * @model unique="false"
   * @generated
   */
  EList<String> getAdminCSS();

  /**
   * Returns the value of the '<em><b>Options</b></em>' containment reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Options</em>' containment reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Options</em>' containment reference.
   * @see #setOptions(Options)
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Options()
   * @model containment="true"
   * @generated
   */
  Options getOptions();

  /**
   * Sets the value of the '{@link com.logicfishsoftware.plugbench.wPPlugBench.Plugin#getOptions <em>Options</em>}' containment reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Options</em>' containment reference.
   * @see #getOptions()
   * @generated
   */
  void setOptions(Options value);

  /**
   * Returns the value of the '<em><b>Options Page</b></em>' containment reference list.
   * The list contents are of type {@link com.logicfishsoftware.plugbench.wPPlugBench.OptionsPage}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Options Page</em>' containment reference list isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Options Page</em>' containment reference list.
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_OptionsPage()
   * @model containment="true"
   * @generated
   */
  EList<OptionsPage> getOptionsPage();

  /**
   * Returns the value of the '<em><b>Admin Pages</b></em>' containment reference list.
   * The list contents are of type {@link com.logicfishsoftware.plugbench.wPPlugBench.AdminPage}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Admin Pages</em>' containment reference list isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Admin Pages</em>' containment reference list.
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_AdminPages()
   * @model containment="true"
   * @generated
   */
  EList<AdminPage> getAdminPages();

  /**
   * Returns the value of the '<em><b>Functions</b></em>' containment reference list.
   * The list contents are of type {@link com.logicfishsoftware.plugbench.wPPlugBench.Function}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Functions</em>' containment reference list isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Functions</em>' containment reference list.
   * @see com.logicfishsoftware.plugbench.wPPlugBench.WPPlugBenchPackage#getPlugin_Functions()
   * @model containment="true"
   * @generated
   */
  EList<Function> getFunctions();

} // Plugin
